From: Florian Müllner Date: Mon, 10 Jul 2023 08:33:31 +0000 (+0200) Subject: extensions: Add static lookupByUUID() method X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~337^2~1^2~93 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=82237a398f2d019f7992a911f6f214abc9c3f8c2;p=gnome-shell.git extensions: Add static lookupByUUID() method This allows the Extension/Preferences classes to provide the UUID -> extension lookup without exposing the underlying extension manager. Part-of: --- diff --git a/js/extensions/extension.js b/js/extensions/extension.js index bcc518edd..cdbc33da7 100644 --- a/js/extensions/extension.js +++ b/js/extensions/extension.js @@ -4,6 +4,10 @@ const {extensionManager} = imports.ui.main; setExtensionManager(extensionManager); export class Extension extends ExtensionBase { + static lookupByUUID(uuid) { + return extensionManager.lookup(uuid)?.stateObj ?? null; + } + static defineTranslationFunctions(url) { const wrapper = new GettextWrapper(this, url); return wrapper.defineTranslationFunctions(); diff --git a/js/extensions/prefs.js b/js/extensions/prefs.js index 5d2de3f98..ab0a74dd2 100644 --- a/js/extensions/prefs.js +++ b/js/extensions/prefs.js @@ -6,6 +6,10 @@ import {extensionManager} from '../extensionsService.js'; setExtensionManager(extensionManager); export class ExtensionPreferences extends ExtensionBase { + static lookupByUUID(uuid) { + return extensionManager.lookup(uuid)?.stateObj ?? null; + } + static defineTranslationFunctions(url) { const wrapper = new GettextWrapper(this, url); return wrapper.defineTranslationFunctions(); diff --git a/js/extensions/sharedInternals.js b/js/extensions/sharedInternals.js index dcac3c233..ac6d035a8 100644 --- a/js/extensions/sharedInternals.js +++ b/js/extensions/sharedInternals.js @@ -1,5 +1,6 @@ import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; +import GObject from 'gi://GObject'; import {bindtextdomain} from 'gettext'; @@ -38,14 +39,23 @@ export class ExtensionBase { path = GLib.path_get_dirname(path); const dirName = GLib.path_get_basename(path); - const extension = _extensionManager.lookup(dirName); + const extension = this.lookupByUUID(dirName); if (extension !== undefined) - return extension.stateObj; + return extension; } while (path !== '/'); return null; } + /** + * Look up an extension by UUID + * + * @param {string} _uuid + */ + static lookupByUUID(_uuid) { + throw new GObject.NotImplementedError(); + } + /** * @param {object} metadata - metadata passed in when loading the extension */